package com.itheima.mycollection;

import java.util.ArrayList;
import java.util.Iterator;

/*
    ConcurrentModificationException: 并发修改异常
    并发修改异常:
        指的是在迭代器思想遍历过程中,一遍遍历集合容器,一遍修改集合容器的长度,这时候JVM会抛出此异常
 */
public class ConcurrentModificationExceptionDemo {

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();

        list.add("hello");
        list.add("world");
        list.add("java");

        //1. 使用迭代器遍历
        /*Iterator<String> it = list.iterator();
        while (it.hasNext()){
            String str = it.next();

            //2. 判断当前元素是不是"world",如果是,新增一个"JavaSE"
            if ("world".equals(str)){
                list.add("JavaSE");
            }
        }*/

        /*//2. 使用增强for遍历
        for (String str : list) {
            if ("world".equals(str)){
                list.add("JavaSE");
            }
        }*/

        //解决方案: 使用普通for遍历可以解决
        for (int i = 0; i < list.size(); i++) {
            String str = list.get(i);
            //2. 判断当前元素是不是"world",如果是,新增一个"JavaSE"
            if ("world".equals(str)){
                list.add("JavaSE");
            }
        }

        System.out.println("list = " + list);
    }


}
